import py5

# 设置一些全局变量来控制线条的行为
num_lines = 100  # 线条数量
line_data = []   # 存储每条线的位置和颜色信息

def setup():
    """初始化设置"""
    py5.size(800, 600)  # 设置画布大小为800x600像素
    py5.background(0)   # 设置背景颜色为黑色
    py5.stroke_weight(10)  # 设置线条宽度
    
    # 初始化线条数据
    for _ in range(num_lines):
        x = py5.random(py5.width)
        y = py5.random(py5.height)
        color = py5.color(py5.random(255), py5.random(255), py5.random(255))
        line_data.append([x, y, color])

def draw():
    """每帧绘制的内容"""
    py5.background(0)  # 每次重绘时刷新背景，营造动画效果
    
    for i, (x, y, color) in enumerate(line_data):
        # 更新每个线条的位置（根据速度向量）
        new_x = x + py5.random(-5, 5)
        new_y = y + py5.random(-5, 5)

        # 如果超出边界则重新定位到另一端
        if new_x > py5.width:
            new_x = 0
        elif new_x < 0:
            new_x = py5.width
            
        if new_y > py5.height:
            new_y = 0
        elif new_y < 0:
            new_y = py5.height

        # 绘制线条
        py5.stroke(color)
        py5.line(x, y, new_x, new_y)

        # 更新存储的数据
        line_data[i] = [new_x, new_y, color]

if __name__ == '__main__':
    py5.run_sketch()
